﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Banesco.Logica;
using Banesco.Entidades;

namespace WebCliente.Pages
{
    public partial class FrmMantenimientosUsuariosSistemas : System.Web.UI.Page
    {
        int idUsuario = 0;
        UsuarioSistema objUsuariosSistemas;

        
        public int IDUsuario
        {
            get
            {
                try
                {
                    return (int)Session["_IDUsuario"];
                }
                catch
                {
                    return 0;
                }
            }
            set { Session.Add("_IDUsuario", value); }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.CargarInformacionUsuarios();
            }
        }

        private void CargarInformacionUsuarios()
        {
            gvUsuarios.DataSource = this.ObtenerInformacionUsuarios();
            gvUsuarios.DataBind();
        }

        private DataTable ObtenerInformacionUsuarios()
        {
            DataTable tablaUsuarios = new DataTable();
            Mensaje retMensaje = new Mensaje();
            BSBanesco objBSB = new BSBanesco();
            DataSet dsDatos = new DataSet();
            try
            {

                retMensaje = objBSB.UsuariosSistema_ObtenerInformacionDeUsuarios(ref dsDatos);

            }
            catch (Exception ex)
            {

            }

            if (dsDatos.Tables.Count > 0)
            {
                if (dsDatos.Tables[0].Rows.Count > 0)
                {
                    tablaUsuarios = dsDatos.Tables[0];
                }
            }
            return tablaUsuarios;

        }

        protected void gvUsuarios_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvUsuarios.PageIndex = e.NewPageIndex;
            this.CargarInformacionUsuarios();
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            try
            {
                if (IDUsuario != null)
                {
                    if (IDUsuario != 0)
                    {
                        Mensaje retMensaje = new Mensaje();
                        BSBanesco objBSB = new BSBanesco();
                        objUsuariosSistemas = new UsuarioSistema();
                        objUsuariosSistemas.IDUsuario = IDUsuario;
                        objUsuariosSistemas.NombreUsuarioSistema = this.txtNombreUsuarioSistema.Text;
                        objUsuariosSistemas.NombreCompleto = this.txtNombreCompleto.Text;
                        objUsuariosSistemas.NumeroTelefono = this.txtNumeroTelefono.Text;
                        objUsuariosSistemas.CorreoElectronico = this.txtCorreoElectronico.Text;
                        objUsuariosSistemas.Estado = this.ddlTipoEstado.SelectedItem.Value.ToString();
                        objUsuariosSistemas.IDUsuarioModificacion = 1;
                        objUsuariosSistemas.FechaModificacion = DateTime.Now;

                        retMensaje = objBSB.UsuariosSistema_ActualizarInformacionUsuarios(objUsuariosSistemas);

                        if (retMensaje.Status == Mensaje.EnumStatus.OK)
                        {
                            EstablecerMensaje("Se ha completado de manera satisfactoriola actualizacion del el registro del usuario", WebCliente.UserControls.pcCajaMensajes.PageProtectionMode.Informacion);
                            LimpiarControles();
                            CargarInformacionUsuarios(); 
                        }
                        else
                        {
                            EstablecerMensaje("No se ha completado de manera satisfactorio la actualizacion de el registro del usuario", WebCliente.UserControls.pcCajaMensajes.PageProtectionMode.Atencion);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EstablecerMensaje("No se ha completado de manera satisfactorio la actualizacion de el registro del usuario", WebCliente.UserControls.pcCajaMensajes.PageProtectionMode.Atencion);
            }
        }

        /// <summary>
        /// Establece el tipo de mensaje y el contenido del mensaje.
        /// </summary>
        /// <param name="mensaje">Mensaje a desplegar en el sistema</param>
        /// <param name="tipoMensaje">Tipo de mensaje a desplegar en el sistema</param>
        private void EstablecerMensaje(string mensaje, WebCliente.UserControls.pcCajaMensajes.PageProtectionMode tipoMensaje)
        {
            
            pcCajaMensajes1.Mensaje = mensaje;
            pcCajaMensajes1.TipoMensaje = tipoMensaje;
            pcCajaMensajes1.EstablecerInformacion();
        }

        private void LimpiarControles()
        {
            this.txtNombreCompleto.Text = string.Empty;
            this.txtNombreUsuarioSistema.Text = string.Empty;
            this.txtCorreoElectronico.Text = string.Empty;
            this.txtNumeroTelefono.Text = string.Empty;

        }

        protected void brtCancelarEdicion_Click(object sender, EventArgs e)
        {
            this.DivMantenimientoUsuariosSistema.Visible = false;
            this.DivUsuariosSistema.Visible = true;
        }

        protected void gvUsuarios_RowEditing(object sender, GridViewEditEventArgs e)
        {
            try
            {
                objUsuariosSistemas = new UsuarioSistema();
                pcCajaMensajes1.LimpiarInformacion(); 
                //IDUsuario,UserName,Clave,UsuarioSistema,Nombre,Telefono,Email,Estado,UsuCre,FecCre,UsuMod,UltFecMod,UltFecModClave
                IDUsuario = Convert.ToInt32(gvUsuarios.DataKeys[e.NewEditIndex][0].ToString());
                this.txtNombreCompleto.Text = gvUsuarios.DataKeys[e.NewEditIndex][4].ToString();
                this.txtNombreUsuarioSistema.Text = gvUsuarios.DataKeys[e.NewEditIndex][3].ToString();
                this.txtCorreoElectronico.Text = gvUsuarios.DataKeys[e.NewEditIndex][6].ToString();
                this.txtNumeroTelefono.Text = gvUsuarios.DataKeys[e.NewEditIndex][5].ToString();

                ddlTipoEstado.ClearSelection();
                ddlTipoEstado.Items.FindByValue(gvUsuarios.DataKeys[e.NewEditIndex][7].ToString()).Selected = true; 

 
                this.DivUsuariosSistema.Visible = false;
                this.DivMantenimientoUsuariosSistema.Visible = true;
            }
            catch (Exception ex)
            { }
        }


    }
}
